package com.tanjun.userservice.web.service.user;


import com.mybatisflex.core.service.IService;
import com.tanjun.userservice.web.service.input.AdminUserInput;
import com.tanjun.userservice.web.service.input.BaseAdminUserUniqueInput;
import com.tanjun.userservice.web.service.user.entity.BaseAdminUserEntity;
import jakarta.validation.constraints.NotNull;
import org.springframework.validation.annotation.Validated;

/**
* @author tanjun
* @description 针对表【base_admin_user(系统用户)】的数据库操作Service
* @createDate 2024-12-03 21:44:43
*/
public interface BaseAdminUserService extends IService<BaseAdminUserEntity> {
    /**
     * 根据输入值判断是否有用户名、手机号或者邮箱等于给定的值
     * @param key
     * @return
     */
    BaseAdminUserEntity getAdminUserByKey(String key);

    /**
     * 检查用户登录凭证是否唯一
     * @param input 请求
     * @return 唯一返回true
     */
    void checkUserUnique(@Validated BaseAdminUserUniqueInput input);

    /**
     * 新增或修改用户信息
     * 新增用户的时候密码必填
     * 修改的时候不会修改用户密码
     * @param input 用户信息
     */
    void addOrUpdateUserBase(AdminUserInput input);

    /**
     * 根据userId 获取用户信息
     * @param userId 用户id
     * @return 用户信息
     */
    BaseAdminUserEntity getAdminUserByUserId(@NotNull Long userId);

    /**
     * 删除用户信息
     * @param userId 用户id
     */
    void delAdminUserByUserId(@NotNull Long userId);

    /**
     * 重置密码
     * @param userId 用户id
     * @param password 密码
     */
    void resetPassword(@NotNull Long userId,@NotNull String password);
}
